package com.jiangyg.mall.authz.constant;

import com.jiangyg.mall.core.support.env.EnvConstant;

/**
 * 类描述：安全相关的常量
 *
 * @author jiangyg
 * @date 2021-10-12
 */
public final class SecurityConstant {

    /**
     * 登录地址
     */
    public static final String LOGIN_URL = "/login";

    /**
     * 登出地址
     */
    public static final String LOGOUT_URL = "/logout";

    public static final String AUTH_INFO_ATTR_NAME = "AUTH_INFO_ATTR_NAME";

    /**
     * 功能描述：获取token名称
     *
     * @return token名称
     */
    public static String tokenName() {
        final String tokenName = EnvConstant.getString("security.tokenName");
        if (tokenName == null) {
            return "token";
        }
        return tokenName;
    }

    /**
     * 功能描述：获取token密钥
     *
     * @return token密钥
     */
    public static String securityBase64() {
        return EnvConstant.getString("security.base64Security");
    }

    /**
     * 功能描述：获取过期时间
     *
     * @return 过期时间
     */
    public static int timeout() {
        return EnvConstant.getInt("security.timeout");
    }

    /**
     * 功能描述：刷新时间，防止token过期，一般设置过期时间的1/3左右，单位秒
     *
     * @return 刷新时间
     */
    public static long refreshInterval() {
        return EnvConstant.getLong("security.refreshInterval");
    }

    /**
     * 功能描述：是否允许用户同一时间使用多个token
     *
     * @return 是否允许
     */
    public static boolean allowMultiToken() {
        return EnvConstant.getBoolean("security.allowMultiToken");
    }

    /**
     * 功能描述：客户端类型header名称
     *
     * @return 是否允许
     */
    public static String clientTypeHeaderName() {
        return EnvConstant.getString("security.clientTypeHeaderName");
    }

}
